package com.cskaoyan.javase.basic._5extra;

/**
 * 整数常量的特殊性,针对整型字面值常量以及它们的运算
 *
 * 特殊的规则:
 *
 *      1.对于整数字面值常量（包括常量的运算）而言，因为它的值一定不会发生变化，而且整型数据值的位数十分容易判断
 *      所以编译器能够自动判断整型常量是否在接收数据类型的范围内。
 *
 *      2.体现在语法上就是：将一个整型字面值（包括常量的运算）赋值给整型时，如果该常量在整型数据类型的取值范围内，是可以赋值成功的。
 *
 *
 * @since 14:44
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo4 {
    public static void main(String[] args) {

        int a = 1;
        /*
            注意事项: 表达式的类型提升针对于表达式中存在变量或者浮点型常量参与运算的场合
                    遵循表达式的类型提升,表达式的结果数据类型就是表达式中取值范围最大的数据类型
         */
        // int --> byte 是强转
        // byte b2 = a + 2;


        // 表达式中没有变量,仅存在整型字面值常量以及它的运算,这时就不遵循表达式类型提升了,而是有一个特殊的规则
        byte b = 1 + 2;

        byte b2 = 120 + 3;
        // byte b3 = 120 + 8;

        char c = 0;
        char c2 = 65535;
        // char c3 = 65536;

        short s = -10000;
        short s2 = -20000;
        short s3 = -30000;
        // short s4 = -40000;
    }
}
